# 编译器和标志
CC = gcc
CFLAGS = -std=c99 -Wall -Wextra -Wpedantic -O2
CXX = g++
CXXFLAGS = -std=c++11 -Wall -Wextra -Wpedantic -O2

# 源文件和目标文件
SRCSC = $(wildcard *.c)
SRCSCXX = $(wildcard *.cpp)
TARGETS_C = $(SRCSC:.c=)
TARGETS_CXX = $(SRCSCXX:.cpp=)
TARGETS = $(TARGETS_C) $(TARGETS_CXX)

.PHONY: all clean

# 默认编译所有目标
all: $(TARGETS)

# 模式规则：从 .c 文件编译出可执行文件
%: %.c
	$(CC) $(CFLAGS) -o $@ $<

# 模式规则：从 .cpp 文件编译出可执行文件  
%: %.cpp
	$(CXX) $(CXXFLAGS) -o $@ $<

# 清理生成的文件
clean:
	rm -f $(TARGETS)
